package keter.model;

import java.util.List;

import keter.framework.model.base.CacheModel;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.jfinal.ext.plugin.tablebind.TableBind;

/**
 * 角色
 *
 * @author  gulixing@msn.com
 * @date    2015年12月19日
 */
@TableBind(tableName="org_role")
public class Role extends CacheModel<Role> {
    /**
     * Logger for this class
     */
    private static final Logger logger = LoggerFactory.getLogger(Role.class);
    
    public static final Role dao = new Role();
    
    /** 管理员角色用户 */
    public static final String ROLE_ADMIN = "ROLE_ADMIN";
    /** 普通用户角色 */
    public static final String ROLE_USER = "ROLE_USER";
    
    
    /**
     * 查询默认角色
     * @return 
     * @author  gulixing@msn.com
     * @date    2015年12月10日
     */
    public Role findDefaultRole() {
        return (Role) dao.findFirst("select r.id,r.name from org_role r where r.name=?",
        		wrap(ROLE_USER)
        	);
    }
    
    public boolean save(){
       //TODO:新建任何角色时，自动分配给超管一个
       return super.save();
    }
    
    public List<Role> findByUserId(Object userid) {
    	return find(
    		  " select r.id,r.name,r.label,r.permission "
    		+ " from org_role r join org_user_role ur "
    		+ " on r.id = ur.role_id and ur.user_id=?",
    		wrap(userid)
    	);
    }
    
    public String findPermissionByName(String name) {
    	return findFirstWithCache(
    		name,   //cacheKey
    		"select r.permission from org_role r where r.name=?",
    		wrap(name)
    		).getStr("permission");
    }
    
    public void validate() {
        validator().notEmpty("name");
    }
}